package com.cloud.bssp.java8.stream;

import lombok.Data;

import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;

/**
 * @description： 实现一个从菜单筛选低热量（小于500）菜肴名称并从小到大排序的功能
 * @author：weirx
 * @date：2021/10/20 15:00
 * @version：3.0
 */
public class ChoiceCalorieByJava8 {

    @Data
    static class Dish {
        private String name;
        private Integer calorie;

        public Dish(String name, Integer calorie) {
            this.name = name;
            this.calorie = calorie;
        }
    }

    public static void main(String[] args) {
        List<Dish> dishes = Arrays.asList(
                new Dish("烧烤", 1000),
                new Dish("沙拉", 100),
                new Dish("汉堡", 1200),
                new Dish("火锅", 800),
                new Dish("粥", 300)
        );

        List<String> dishNames = dishes.stream()
                .filter(dish -> dish.getCalorie() < 500) //筛选卡路里小于500
                .sorted(Comparator.comparing(Dish::getCalorie)) //排序
                .map(Dish::getName) //获取名称
                .collect(Collectors.toList()); //转成list
        // 打印结果 [沙拉, 粥]
        System.out.println(dishNames);
    }
}
